#ifndef ALGO_EVA_DB_H
#define ALGO_EVA_DB_H

#include "algohub_export.h"
#include "algohub_common_type.h"
#include "NDimsArray/NDimsArray.h"

namespace algo
{
	class AlgoEvaluatorDBPrivate;
	class ALGOHUB_EXPORT AlgoEvaluatorDB final
	{
	public:
		AlgoEvaluatorDB();
		AlgoEvaluatorDB(
			const algobase::TaskConfig& config, 
			const std::vector<algobase::EvaluateL2IndexType>& types);

		~AlgoEvaluatorDB();

		bool fillData(
			const algobase::TaskConfig& config, 
			const std::vector<algobase::EvaluateL2IndexType>& types);

		void appendData(
			algobase::EvaluateEnvirDataType type, 
			std::pair<std::string, darr::DimsArray<float>>& data);

		void appendData(
			algobase::EvaluateEnvirDataType type, 
			std::map<std::string, darr::DimsArray<float>>& muti_data);

		float getData(
			algobase::EvaluateEnvirDataType type, 
			const algobase::Date& date, 
			const algobase::CoordZ& coordZ, 
			float defaultValue = 0.);

	private:
		AlgoEvaluatorDBPrivate* d;
	};
}

#endif // !ALGO_EVA_DB_H
